home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 1.iso / ARGONET / PD / MODULES / LINEEDIT.SPK / !ReadMe next >
Text File  |  1996-09-04  |  23KB  |  508 lines

  1.                         LineEditor Module release 2.71
  2.                         ==============================
  3.  
  4. ** Source, binaries and documentation        **
  5. ** Copyright (C) Oliver Betts 1994,1995,1996 **
  6.  
  7. This software is provided as is - it has been tested to a reasonable extent,
  8. but probably has a few lurking bugs.  I take no responsibility for any loss
  9. or damage, directly or indirectly caused.
  10.  
  11. UNIX is a trademark of AT&T; 4DOS is a trademark of JP Software Inc.
  12. Incidentally, I highly recommend 4DOS if you have to use DOS.
  13.  
  14. Versions with a letter suffix are test versions and may only be distributed
  15. with express permission from me.  Other versions may be distributed freely
  16. provided all files are supplied intact and that no profit is made.  You may
  17. bundle it with other freeware software provided these distribution
  18. restrictions are met, but please make sure you're supplying the latest
  19. version.  If you want to distribute it in some other way, get in touch.
  20.  
  21. *****************************************************************************
  22.  
  23. This module started out as some modifications to version 2.30 of Richard K.
  24. Lloyd's LineEditor module, to make it work better with TaskWindows
  25. (specifically to use the same *FX4 and *FX 220-228 settings as the Wimp).
  26.  
  27. However, RKL seems not to respond to email or snail mail, and so not having
  28. his permission to release my modified version, I have entirely rewritten the
  29. module.  In doing so I have fixed a number of bugs which were in the original
  30. and added many extra features, some of which were inspired by tcsh (and other
  31. UNIX shells) and 4DOS (for DOS!).
  32.  
  33. I'm still actively working on this program, so watch out for new versions.
  34. Please let me know if you find any bugs or problems (read this file first
  35. though!).  I'll release the source with future versions.
  36.  
  37. Files in this release:
  38.  
  39. !ReadMe    - this file
  40. LineEditor - the module
  41. RebindKeys - obey file to change key bindings
  42. Actions    - a list of the actions which can be bound to keys
  43. DfltKeys   - default key bindings
  44. OllyKeys   - the bindings I use -- provided as an example
  45. Rebinder   - used by RebindKeys -- don't run directly
  46. Zap131     - patch file to upgrade Zap 1.30's use of LineEditor's SWIs
  47.  
  48. The keys file has a very similar layout to the !Zap keys file.  The
  49. mechanism for rebinding is a bit nasty, and will be improved when I get
  50. some spare time.
  51.  
  52. For a list of the default key bindings, load the LineEditor module and type
  53. "*Help Editor".
  54.  
  55. Random note:  Ctrl-N is now mapped to Next-line (same as cursor down), and
  56. similarly for some other useful Ctrl-<letter> combinations.  Unless bound
  57. otherwise, Ctrl-Shift-<letter> is bound to "vanilla", which will input
  58. Ctrl-<letter>.  Alternatively, "quote" the keypress, e.g. Ctrl-Q Ctrl-N.
  59.  
  60. Use with Dom Symes' !Zap (see also !Zap's !Help file):
  61.  
  62. * To use function keys and Control + key you need to type Ctrl-Q first to
  63.   "Quote" the key - otherwise !Zap will process the key.  The cursor keys,
  64.   TAB and PageUp/PageDown are passed through and so don't need quoting.
  65.   !Zap 1.20 will also pass most Ctrl-Letter combinations through, although
  66.   it won't pass through keys that have certain actions bound to them (eg.
  67.   QUOTE).  See the !Zap documentation for a complete list.
  68.  
  69. * COPYing works - activated by the command COPY which is bound to COPY and
  70.   Shift-COPY by default.  From !Zap 1.20, pressing Escape during COPYing will
  71.   stop the copy, but not abort the line.  Press Escape again to abort the
  72.   line.  LineEditor behaves in the same way outside of TaskWindows.
  73.  
  74. * TaskWindows under RISC OS 2: The TaskWindow module supplied with !Edit on
  75.   RISC OS 2 Application Disc 1 (v 0.03) won't work with !Zap - you need the
  76.   one supplied with the C/Asm DDE (about 0.29) or above.  0.03 only works
  77.   with !Edit 1.00 and not very well.  The RISC OS 3.1 TaskWindow module
  78.   works best of all, but you can't legally get it without having RO 3.1...
  79.  
  80. * With the default keymap supplied with !Zap 1.10 and 1.20, Enter on the
  81.   numeric keypad acts like Ctrl-J in TaskWindows, ie the line isn't stored in
  82.   the history.  You can make it act like Return by altering the appropriate
  83.   line in the keys file from:
  84.    kENTER        &166    RETURN
  85.   to:
  86.    kENTER        &166    CHAR &0D
  87.   which makes Enter behave like Return in TaskWindows, and in other modes.
  88.  
  89. * Due to a minor bug in !Zap, Ctrl-Q Ctrl-@ in a TaskWindow gives an `R',
  90.   rather than setting the mark.  A work around is to use Ctrl-Q Ctrl-SPACE
  91.   instead in TaskWindows.
  92.  
  93. Use with Acorn's !Edit/!SrcEdit:
  94.  
  95. * !Edit/!SrcEdit TaskWindows don't "understand" the codes to move the cursor
  96.   left and right (&08 and &09) so things don't work terribly well.
  97.  
  98. * My version and RKL's seem to work equally well/badly (simple recall and
  99.   filename completion work okay).
  100.  
  101. * I don't think it's possible to work around not having VDU 8 - get !Zap if
  102.   you want to use TaskWindows much - it's much faster too!
  103.  
  104. Use with Alun Jones' !TaskShell:
  105.  
  106. * TaskShell 1.21 has very full VDU support (since it runs full screen and
  107.   uses the OS VDU calls).  It works well with LineEditor, except that
  108.   Ctrl/Shift + Tab combinations don't work as expected (Alun has acknowledged
  109.   this a due to a shortfall in TaskShell's emulation of the keyboard system).
  110.  
  111. * Unfortunately, TaskShell doesn't currently support cursor copying.
  112.  
  113. * LineEditor doesn't send codes to change cursor shape to TaskWindows (as
  114.   they are ignored by most servers and just slow things down a bit).  With
  115.   TaskShell, they would change the cursor shape, but it's not easy to tell
  116.   the difference between a TaskShell and a TaskWindow.
  117.  
  118. Use with Guttorm Vik's !StrongED:
  119.  
  120. * Recent versions of StrongED (I've tested with 4.11beta2) have improved
  121.   TaskWindow support, and support all the codes LineEditor requires.
  122.  
  123. * !StrongED support COPYing in TaskWindows, in much the same way as !Zap.
  124.  
  125. Use with Brian Brunswick's !VMode:
  126.  
  127. * VMode is a graphical desktop TaskWindow server.  It's a bit slow though.
  128.   Version 1.5 seems to work with LineEditor so long as you don't want to
  129.   use the cursor keys, the function keys, Tab, etc.
  130.  
  131. That's all the TaskWindow servers I am aware of.  If you know of any others,
  132. let me know and I'll check them out and add them to the list.
  133.  
  134. Use with RISC OS 2:
  135.  
  136. * I've added code to versions 2.34 and above to read the task handles of
  137.   TaskWindows under RISC OS 2, so local history buffers should now work.
  138.  
  139. * The TaskWindow modules supplied with RISC OS 2 and the Acorn C DDE (0.03
  140.   and 0.29 anyway) have a problem - if LineEditor is loaded, closing a
  141.   TaskWindow doesn't release the memory allocated to the task.  This would
  142.   seem to be a TaskWindow bug [it occurs if you soft-load 0.03 or 0.29 with
  143.   RISC OS 3.1, and with RKL's version].  My best advice (other than to get
  144.   RISC OS 3.1) is to reduce the next slot before starting a TaskWindow and
  145.   not to close task windows that you might want again.
  146.  
  147. * There's a problem with the cursor keys producing symbols rather than being
  148.   interpreted as cursor keys with some setups when using TaskWindow 0.29.
  149.  
  150. Comments and suggestions are greatly encouraged - email will get a reply (if
  151. I can get through), snail mail will eventually, but don't hold your breath. 
  152. Please try to give as much detail as possible in bug-reports - steps to
  153. demonstrate the bug from loading in the module are very helpful indeed.
  154.  
  155. Thanks to Andy Hayward, David Moore and Dom Symes for testing and comments.
  156. Also to Clive Jones for suggesting how to find the current task's handle
  157. under RISC OS 2 (though his idea didn't work ;) ).  Also, thanks to everyone
  158. who's reported bugs and problems, particularly Ian Palmer and Nick Craig-Wood
  159. who've been especially diligent.  And to Ben Summers for supplying some
  160. (slightly buggy) code for creating a dynamic area and maintaining a heap in
  161. it, and to OSLib's headers for telling me how to delete a dynamic area once
  162. I've got one.  And Mark Wooding for some code.
  163.  
  164. Note: Mantis' net feed is overloaded at present, so I'm not currently
  165. putting files on ftp.mantis.co.uk and I've disabled the auto-mailer.
  166. Our feed is due to be upgraded during October 1996, so the next 2
  167. paragraphs should then be true again.
  168.  
  169. You can obtain the latest version by anonymous ftp from ftp.mantis.co.uk
  170. (193.129.10.1) in the directory /pub/users/olly.  The file is le???.arc
  171. decodable using !SparkPlug or similar.
  172.  
  173. If you can't ftp, send me an email with "req-lineed" in the subject line, and
  174. my mailer will automagically uuencode and mail you the latest version.
  175.  
  176. Olly Betts, 1996.09.04
  177.  
  178. Internet email:         olly@mantis.co.uk
  179.  
  180. Indirected snail mail:  Olly Betts,
  181.                         24 Morgans Road,
  182.                         Hertford,
  183.                         Herts,
  184.                         SG13 8BS,
  185.                         UK
  186.  
  187.  
  188. Improvements/bugfixes over RKL's 2.30:
  189. ======================================
  190.  
  191. More TaskWindow compatible:
  192. ---------------------------
  193.  
  194. Changed to use same *FX4 and *FX 220-228 settings as Wimp, so using the
  195. line editor in a TaskWindow doesn't screw up the cursor keys.
  196.  
  197. More values are stored in registers or blocks rather than absolute locations,
  198. which greatly improves behaviour with multiple TaskWindows.
  199.  
  200. Each TaskWindow now has a separate currently-recalled-line pointer.  If
  201. Global history is on, when lines are deleted (by Shift-Insert, or when the
  202. history buffer gets full), the pointers for each TaskWindow are adjusted
  203. appropriately.
  204.  
  205. Function keys work separately in each TaskWindow.
  206.  
  207. You can't *RMKill the LineEditor module while a line is being entered.
  208.  
  209. Beeps are produced by calling sound system SWIs, so work even if the
  210. TaskWindow server doesn't support VDU7 (e.g. !Edit doesn't).
  211.  
  212. Miscellaneous bugs fixed:
  213. -------------------------
  214.  
  215. Ctrl-H performs backspace (RKL's interprets it as Ctrl-Delete and erases
  216. the entire contents of the history buffer!)
  217.  
  218. Backspace in overtype mode didn't delete characters on the screen.
  219.  
  220. RKL's gave incorrect underline cursor in non-BBC gap modes (eg MODE 17).
  221.  
  222. Escape now moves cursor to end of line before exiting.
  223.  
  224. You can now enter all top-bit-set characters; Eg With RKL's version, you
  225. can't enter LOAD"Ý" (to type "Ý" hold down ALT and type 221 on the numeric
  226. keypad, then release ALT - RKL's reads it as Shift-Insert).
  227.  
  228. Filename completion code now copes with long leafnames (RKL's would break
  229. for leafnames >11 characters eg AUTOEXEC/BAT is 12).
  230.  
  231. RKL's used CMOS locations 37 and 38, but his !Trash also uses bits 0-2 of
  232. location 38.  LineEditor now longer uses CMOS RAM at all.
  233.  
  234. R12 wasn't being passed to readlinev - RKL had just hacked around this...
  235.  
  236. V flag is explicitly cleared on errorless exit from ReadLineV routine, as
  237. OS_CallAVector doesn't clear V on entry (RISC OS 2 PRMs, vol I, page 30).
  238.  
  239. Module initialisation code would call OS_GenerateError upon failure - it
  240. should return with V set and R0 -> error block (RO3 PRMs, page 1-204).
  241.  
  242. Other changes which I view as improvements:
  243. -------------------------------------------
  244.  
  245. For RISC OS 3.5, it will now create its own dynamic area for workspace,
  246. rather than using the RMA.  This should help to reduce RMA fragmentation,
  247. especially if local history buffers are used.
  248.  
  249. You can now have separate history buffers for each TaskWindow. (controlled
  250. by bit 0 of the flags word).  Ctrl-Delete wipes *current* history buffer;
  251. *EraseHistory and Shift-Ctrl-Delete wipe *all* history buffers.  When in
  252. local buffer mode, *Recall and *EdStatus put a '*' by the last used buffer.
  253. If the command was typed in using OS_ReadLine, this will be the "current"
  254. buffer, but results may be less meaningful if the command is executed by a
  255. program.
  256.  
  257. Added PageUp/PageDown to scroll through lines with start matching entered
  258. line (also on shift-cursor-up/down) [like Instigator and cursor up/down in
  259. 4DOS].
  260.  
  261. Added Emacs-like bindings [mostly from tcsh]:
  262. Duplicating existing keys:
  263.  ^A ^E start/end of line ^B ^F cursor left/right ^N ^P next/prev line
  264.  ^D delete right
  265. New actions:
  266.  ^Q quote next key, ^T transpose, ^K delete to end of line, ^@ place mark,
  267.  ^X exchange cursor with mark (Emacs ^X ^X), ^W delete region,
  268.  Shift-^D delete to end of word, ^Y yank back last text deleted with ^K, ^W,
  269.  or Shift-^D
  270.  
  271. Added another style of filename completion (like 4DOS).  Shift-Tab completes
  272. fully on first match, then Shift-Tab and Ctrl-Shift-Tab step through other
  273. matches.
  274.  
  275. Removed nasty hacky "Supervisor awareness" as it didn't work for RO 3.x or
  276. at ShellCLI prompt (f12 from desktop). Replaced with better system (for
  277. Acc.Fred[Tab] it looks first for "Acc.Fred*"; if that fails it then looks
  278. for "Fred*" [on the assumption that Acc. is an abbreviated *-command]).
  279.  
  280. There is no longer a limit on the number of lines in the history buffer,
  281. only on the size of the buffer.
  282.  
  283. You can specify minimum and maximum lengths of lines to record in the
  284. history.
  285.  
  286. Doesn't display copyright message on start-up and reset.
  287.  
  288. Syntax messages added for commands.
  289.  
  290. Code doesn't bother trying to change cursor shape in TaskWindows (as VDU
  291. sequences are ignored and only slow things up more).
  292.  
  293. The code is "lazier" about inserting and deleting characters during filename
  294. completion - this gives a slight speed increase in TaskWindows.
  295.  
  296. My completion code doesn't insert `delete' characters into the keyboard
  297. buffer, which might have caused problems if you pressed Shift or Ctrl at
  298. just the wrong moment.
  299.  
  300. Next/previous word treat '(' and ')' as word breaks (same as !Zap 1.10).
  301.  
  302. Module help messages compacted using OS dictionary.
  303.  
  304. Ctrl-L & HOME now redraw current line (bit like tcsh).
  305.  
  306. ^J still behaves like RETURN but doesn't store line in history.
  307.  
  308. Doesn't do *Unset LineEditor$Dir (was done incorrectly for *EraseHistory for
  309. example).
  310.  
  311. Buffers for filename completion code are only allocated when they're needed.
  312.  
  313. No swi-padding code as it is *not* needed (slightly faster and smaller).
  314.  
  315. Added option to assemble with less verbose help text.
  316.  
  317. You can configure completion to add a '.' when completing a directory name,
  318. (a bit like tcsh adds a '/').  However "ls foo/" works and "cat foo."
  319. doesn't, so this is configurable (set bit 1 of the flags word to turn it
  320. on).  As of 2.70 this works for 4DOS-style completion as well.
  321.  
  322. You can configure overtype mode to be on by default if you prefer (though
  323. why you would is beyond me - still, DOS 6 does it...)
  324.  
  325. LineEditor will now do completion of system variable names (when enclosed in
  326. '<' and '>') and filing system names (when enclosed in '-').
  327.  
  328. Shortfalls compared to RKL's version:
  329. =====================================
  330.  
  331. Changes to the buffer size (RKL's *Configure EdSize) don't affect existing
  332. history buffer(s), but are used for new buffers.  I'm not sure if this is
  333. actually a shortfall or a useful feature - may be fixed.
  334.  
  335. No wimp frontend (or is that an improvement?) - seriously, let me know if
  336. you think a Wimp frontend is needed - I might write one if it's wanted...
  337.  
  338. Hasn't been tested with Arthur (the Archimedes OS before RISC OS) - the help
  339. text is compacted but otherwise I think all the new OS calls used fail-safe.
  340. Do let me know if you try it...
  341.  
  342. Minor "feature" - *FX216,0 no longer stops current function key expansion
  343. during OS_ReadLine, but this is no big deal really - it could be solved by
  344. intercepting OS_Byte, but I can't see much point.
  345.  
  346.  
  347. Possible future additional features:
  348. ====================================
  349.  
  350. Add completion of *-commands (I have a prototype working)
  351.  
  352. Add some more csh events (e.g. !$ for last "word" in previous command) and
  353. (optionally) allow csh events to work anywhere in the line.
  354.  
  355. Improve key redefining stuff
  356.  
  357. Improve this documentation!
  358.  
  359. Key-command to glob a wildcarded filename (i.e. expand to a list of all
  360. matching names -- so *.* expands to a list of all objects one directory
  361. down).
  362.  
  363. Filer_OpenDir/Filer_CloseDir key-commands.  Mostly written, but need tidying
  364. up a bit.
  365.  
  366. Some actions can be pretty slow (eg type a very long line with no spaces in
  367. a taskwindow, go to the start and delete word (Ctrl-Shift-D).  Then go and
  368. put the kettle on if you have an ARM 2.  This could be improved if the code
  369. was lazier and redrew only the finished result - although as it stands it
  370. does look quite slick on the command line with an ARM 3 or above.
  371.  
  372. Doesn't work wonderfully in VDU5 mode [neither does RKL's] - maybe fix.
  373.  
  374. Maybe add Ctrl-Page-Up/Down to scroll case sensitive.
  375.  
  376. If we allow the size of existing buffers to change, we should preserve as
  377. much of the history as will fit in new size buffer.
  378.  
  379. As with RKL's, you can recall lines which have characters in which are
  380. outside the range specified by R2 and R3 on entry to OS_ReadLine - the only
  381. solutions I can see are to strip them out (not wonderful) or to only allow
  382. recall if all chars in the range &20-&FF are allowed (this applies to
  383. ShellCLI, BASIC, and GOS (TaskWindows)).  The problem also applies to
  384. filename completion.  Ideas on this one are especially welcome.
  385.  
  386. Other (please specify): ....................................................
  387.  
  388. Revision History:
  389. =================
  390.  
  391. For 2.67 onwards -- See WhatsNew file.
  392.  
  393. 2.66 Now creates dynamic area for workspace under RISC OS 3.5
  394.  
  395. 2.65 [Bundled in !Zap 1.20 release]
  396.      Improved key decoding code so that ctrl-C in taskwindows copies numbers
  397.       okay
  398.      Unbound keys default to vanilla not ignore
  399.      Previously undocumented feature:  vanilla treats Ctrl-J as action return
  400.       so it won't enter lines into the history -- this is useful for function
  401.       keys where you probably don't want the commands executed put in the
  402.       history (Eg. *Set Key$4 <0><&94>SYS"Wimp_CommandWindow",-1|JQUIT|J
  403.       makes scF4 quit the BASIC Editor and return to the desktop)
  404.      sc2 (c@ except on Risc PC) now bound to setmark
  405.      Now deals with flag bits in bits 30 and 31 of R0 on entry to
  406.       OS_ReadLine.  Bit 30 is set for password entry and if set, the
  407.       OS OS_ReadLine is used.  Bit 31 set means echo only those characters
  408.       which enter the buffer and is ignored currently
  409.      vanilla now handles Ctrl-H and Delete
  410.  
  411. 2.64 sReturn, cReturn, scReturn and scJ are now mapped
  412.      If you're copying, Escape now cancels copying mode and leaves you
  413.       editing the line.  Press Escape again to abandon the line.  This
  414.       currently doesn't work with copying in !Zap TaskWindows, since !Zap
  415.       handles the copying itself.  The next release of !Zap will behave in 
  416.       the same way.  In the meantime, you can either use ^B and ^F during
  417.       copying, or bind a spare key to uncopy
  418.      You can bind uncopy to keys to stop copying (note that binding it to
  419.       COPY or the cursor keys won't work, as the OS/!Zap takes control of
  420.       them during copying).  The copy action now toggles, but this doesn't
  421.       work if bound to the COPY key for the same reason
  422.      If keystrokes are actually coming from an OS function key expansion,
  423.       now treat them as OS_ReadLine would, so you can program this:
  424.       *KEY 4 <0><&94>SYS"Wimp_CommandWindow",-1|MQUIT|M
  425.       and then use scF4 to return from the BASIC Editor to the desktop
  426.  
  427. 2.63 Shift-SPACE now produces a SPACE in the Default map (and Olly's)
  428.      Keypad /*-+. and Enter now work in the Default map (and Olly's)
  429.      Fixed bug in code which works out !Zap key numbers - discovered via
  430.       dropped characters in combination with Brian Brunswick's Bits module
  431.      Fixed non-freeing of a small amount of RMA if allocation of a new buffer
  432.       fails part-way through
  433.      Fixed problem of "LineEditor in use" when it had never been used
  434.  
  435. 2.62 With global history, if you hadn't used a non-TaskWindow command line,
  436.       then the history was lost if all TaskWindows were closed - fixed
  437.  
  438. 2.61 Fixed bug with reading value of EdFlags
  439.      Fixed off-by-one error in interpretation of minimum line length to store
  440.  
  441. 2.60 Cursor probably didn't get redefined for RISC OS 2 - should be now
  442.      Fixed bug which recalled junk on pressing cursor-up on a non-empty
  443.       line when history was empty
  444.      Streamlined service call handler for "nothing of interest" case
  445.      Should cope better if any SWI OS_Write* returns an error (and hence
  446.       corrupts R0) - eg if *Spool-ing output and the disk becomes full
  447.      All case-insensitive matching code rewritten to be smaller and faster
  448.      Next/previous word now works just like in Zap 1.10 - ie ' ', '(' and ')'
  449.       are treated as word breaks
  450.      Now allocates leafname buffers for filename completion on-the-fly, so
  451.       we can now cope with arbitrarily long leafnames. Tested with Jason
  452.       Tribbeck's LongFilenames module (version 0.08)
  453.      Added ^Y to yank back text deleted with ^K, ^W (like emacs)
  454.      Filename completion now works properly in overtype mode
  455.      *Help Editor output tweaked to fit better on 80x32 screen
  456.      Ctrl-Shift-D deletes to end of word (Emacs Meta-D)
  457.      Keypresses now decoded using !Zap key codes and a 512 byte table to
  458.       enable easy re-mapping
  459.      Compacted help messages using own dictionary
  460.      You can specify a minimum length of line to record in the history -
  461.       currently you set bits 4-7 of EdFlags to one less (eg 4 to store lines
  462.       of 5 chars or more), so 1 <= min. length <= 16
  463.      Doesn't output VDU sequences to change cursor on start-up now (stops
  464.       empty window appearing when LineEditor module run from Filer)
  465.      Ctrl-Down on typed line with empty history gave garbage - fixed
  466.      Delete word can be yanked back
  467.  
  468. 2.53 Path buffer for filename completion now allocated on the fly
  469.  
  470. 2.52 Routine `free' now returns R0=0
  471.      Explicitly clear V on errorless exit from ReadLineV (bug-fix over RKL)
  472.      Fettled help messages and compacted a little more
  473.      R12 is mostly derefenced on entry (smaller and faster)
  474.      OS_GBPB buffer allocated on the fly
  475.      Print padded decimal routine uses 12 bytes of stack for workspace
  476.  
  477. 2.51 Dom suggested adding a '.' when filename completion completed to a
  478.       directory - controlled by bit 1 of EdFlags
  479.      Set bit 2 of EdFlags to turn overtype mode on by default
  480.  
  481. 2.50 [Bundled in !Zap 1.10 release]
  482.      Pressing Tab/^I on an empty line incorrectly moved the cursor left one
  483.       character if a completion occured
  484.      Deleting left at the end of a recalled line didn't set the modified flag
  485.      With empty history, typing something and pressing PageUp recalled crap
  486.      Added 4DOS style filename completion:  Shift-Tab completes fully, then
  487.       steps thru' completions - Shift-Ctrl-Tab steps backwards
  488.      Shift-Copy does the same as Copy (to match !Zap defaults)
  489.      Updated and tidied output from *Help Editor
  490.  
  491. 2.40 Tidied up a little for release with !Zap 1.10 ('cept it's been delayed)
  492.  
  493. 2.35 TaskWindow tracking workspace if now freed on soft-reset
  494.      If a claim for RMA fails, a beep is emitted and something sensible done
  495.       (start-up gives an error, a function key is ignored, starting a new
  496.       TaskWindow reverts to the default OS_ReadLine routine)
  497.      Fixed minor bug in filename expansion code (introduced in 2.34)
  498.      PageUp and PageDown now don't insert start line into the history
  499.  
  500. 2.34 Fixed minor bug in filename completion code
  501.      Added code to find task handle for RISC OS 2 (easier than I thought)
  502.      Now marks "current" buffer with a '*' in *Recall and *EdStatus if
  503.       local history is in operation
  504.      Recoded filename completion to enter characters directly, rather than
  505.       via keyboard buffer
  506.  
  507. 2.33 First beta release
  508.